<?php

include "../lib/start.php";

check_session();
check_permission(ADM_PERM);

ini_set("display_errors", "1");

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="author" content="" />
<link rel="stylesheet" href="../css/main.css" type="text/css" />
<script type="text/javascript" src="../js/prototype.js"></script>
<script type="text/javascript" src="../js/scriptaculous.js"></script>
<script type="text/javascript" src="../js/controls.js"></script>
<script type="text/javascript" src="../js/page.js"></script>
<script type="text/javascript">

</script>
<title>Registro elettronico</title>
</head>
<body>
<div id="header">
<div class="wrap">
<?php include "header.php" ?>
		</div>
	</div>
	<div class="wrap">
	<div id="main" style="background-color: #FFFFFF; padding-bottom: 30px; width: 100%">
        <table width="90%" style="margin-right: auto; margin-left: auto; margin-top: 20px">
            <tr>
                <td style="font-weight: bold; font-size: 14px" colspan="3" align="center">Creazione registro di classe</td>
            </tr>
            <tr>
                <td style="font-weight: normal; font-size: 14px; padding-top: 30px; padding-bottom: 20px" colspan="3" align="center">
                	<span id="t_msg">Preparazione dei dati...</span> <span style="padding-left: 15px" id="msg"> </span>
                </td>
            </tr>
     		<tr style="margin-top: 30px">
     			<td colspan="2" style="text-align: center; margin: auto; width: 420px">
     				<div style="width: 400px; height: 15px; border: 1px solid; margin: auto; text-align: left" id="myElementId">
     			 		<img id="progress" src="../images/progress.gif" style="height: 15px; width: 1%; text-align: left" />
     				</div>
     			</td>
     		</tr>
     		<tr>
     			<td colspan="2" style="padding-top: 30px">&nbsp;</td>
     		</tr>
     		<tr>
     			<td colspan="2" style="text-align: right; margin-right: 50px; padding-bottom: 30px"><a href="index.php">Torna al menu</a></td>
     		</tr>
        </table>
    </div>
    	<div id="footer">
		<p>Design: Luka Cvrk - <a href="http://www.solucija.com" title="Free Web Templates">Solucija</a></p>
	</div>
	</div>		
</body>
</html>

<?php 
$sel_anno = "SELECT * FROM anni ORDER BY id_anno DESC LIMIT 1";
$res_anno = $db->executeQuery($sel_anno);
$anno = new AnnoScolastico($res_anno->fetch_assoc());

// calcolo del numero di queries
$num_classi = 34;
$first_day = format_date($anno->get_data_inizio_lezioni(), IT_DATE_STYLE, SQL_DATE_STYLE, "-");
$last_day = format_date($anno->get_data_termine_lezioni(), IT_DATE_STYLE, SQL_DATE_STYLE, "-");
$current_day = format_date($anno->get_data_inizio_lezioni(), IT_DATE_STYLE, SQL_DATE_STYLE, "-");
$days = 0;
while(strtotime($current_day) < strtotime($last_day)){
	if((date("w", strtotime($current_day)) == "0")){
		// do nothing
	}
	else{
		$days++;
	}
	
	//print("$insert -> Inserito record per $current_day</br>");
	$current_day = date("Y-m-d", strtotime("$current_day +1 days"));
}
$queries = $num_classi * $days;
$num_al = $db->execute("SELECT COUNT(*) AS count FROM alunni");
$n_al = $num_al->fetch_assoc();
$al_queries = $days * $n_al['count'];
$queries += $al_queries;

flush();
$max = $queries;
$fattore_avanzamento = $max / 100;

//print $queries;
/**
 * primo passo:
 * inserire i record nella tabella reg_classi.
 * Questa tabella contiene 5 campi:
 *  - id_reg: chiave primaria
 *  - id_classe: id della classe
 *  - id_anno: id dell'anno di riferimento
 *  - data: il giorno
 *  - ingresso: orario di ingresso della classe (default 8:30), che varia per diversi motivi
 *  - uscita: orario di uscita della classe (default 13:30), che varia
 * Lo script inserisce, per ogni classe, un record per ogni giorno di lezione, escludendo domeniche e feste		
 */



$sel_classi = "SELECT id_classe FROM classi";
$res_classi = $db->execute($sel_classi);
$classi = array();
while($_classi = $res_classi->fetch_assoc()){
	array_push($classi, $_classi['id_classe']);
}

$days = 0;
$current_day = format_date($anno->get_data_inizio_lezioni(), IT_DATE_STYLE, SQL_DATE_STYLE, "-");
// contatore delle queries eseguite
$i = 0;
print("<script>$('t_msg').innerHTML = 'Caricamento dei dati in corso: ';</script>");
while(strtotime($current_day) < strtotime($last_day)){
	if((date("w", strtotime($current_day)) == "0")){
		// do nothing
	}
	else{
		foreach($classi as $id_classe){
			$insert = "INSERT INTO reg_classi (id_classe, id_anno, data) VALUES ($id_classe, ".$anno->get_ID().",'$current_day')";
			$res = $db->executeUpdate($insert);
			if(($i % $fattore_avanzamento) == 0){
				print ("<script>$('progress').style.width = '".$i/$fattore_avanzamento."%';	$('msg').innerHTML = '".intval($i/$fattore_avanzamento, 10)."%'</script>");
				flush();
			}
		}
	}
	$days++;
	//print("$insert -> Inserito record per $current_day</br>");
	$current_day = date("Y-m-d", strtotime("$current_day +1 days"));
	$i++;
	//print $i."<br />";
}
//print "Inserimento giornate terminato: $days giorni<br /><br />Avvio inserimento alunni";

$sel_classi = "SELECT id_classe, anno_corso, sezione FROM classi";
$res_classi = $db->executeQuery($sel_classi);
$classi = array();
while($_classi = $res_classi->fetch_assoc()){
	$id_c = $_classi['id_classe'];
	$sel_alunni = "SELECT id_alunno, id_classe FROM alunni WHERE id_classe = $id_c";
	$res_alunni = $db->executeQuery($sel_alunni);
	while($alunno = $res_alunni->fetch_assoc()){
		$id_alunno = $alunno['id_alunno'];
		$id_classe = $alunno['id_classe'];
		$sel_registro = "SELECT id_reg, ingresso, uscita FROM reg_classi WHERE id_classe = $id_c AND id_anno = ".$anno->get_ID();
		//print $sel_registro;
		$res_registro = $db->executeQuery($sel_registro);
		while($day = $res_registro->fetch_assoc()){
			$insert_al = "INSERT INTO reg_alunni VALUES (".$day['id_reg'].", $id_alunno, '".$day['ingresso']."', '".$day['uscita']."', NULL, NULL)";
			$res_in = $db->executeUpdate($insert_al);
			if(($i % $fattore_avanzamento) == 0){
				print ("<script>$('progress').style.width = '".$i/$fattore_avanzamento."%';	$('msg').innerHTML = '".intval($i/$fattore_avanzamento, 10)."%';</script>");
				flush();
			}
			$i++;
		}
	}
}
print ("<script>$('t_msg').innerHTML = ''; $('msg').innerHTML = 'Caricamento completato';$('progress').style.width = '100%';</script>");
?>